package com.lzj.friend;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class FriendMapper extends Mapper<LongWritable, Text, Text, IntWritable> {

    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        /**
         * 黄龙剑	彭蠡昆	曾小龙	陈甲伟	张义政	徐新辉	罗昊阳	李志凌	陈紫怡	魏力	周强根
         */
        //开始处理数据
        String[] persons = value.toString().split("\\s+");
        //开始对数据进行遍历
        if (persons != null && persons.length > 0) {
            //当前用户
            String person = persons[0];
            for (int i = 1; i < persons.length; i++) {
                //整理直接好友
                context.write(new Text(friendOrder(person, persons[i])), new IntWritable(-1));
                //开始遍历间接好友
                for (int j = i + 1; j < persons.length; j++) {
                    //开始写出间接好友
                    context.write(new Text(friendOrder(persons[i], persons[j])), new IntWritable(1));
                }
            }
        }

    }

    /**
     * 根据好友的名字确定先后顺序
     *
     * @param f1
     * @param f2
     * @return
     */
    private String friendOrder(String f1, String f2) {
        return f1.compareTo(f2) > 0 ? f1 + ":" + f2 : f2 + ":" + f1;
    }
}
